home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS065.dsk
/
FAMILY FINANCE (C).bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
8KB
|
212 lines
0 GOTO 40
1 REM **************************
2 REM * FAMILY FINANCE *
3 REM * COPYRIGHT (C) 1980 *
4 REM * KURT G. SCHUMACHER *
5 REM * ARLINGTON HEIGHTS, IL *
6 REM * DONATED BY AUTHOR TO *
7 REM * NORTHERN ILLINOIS AUG *
8 REM * DECLARED PUBLIC DOMAIN *
9 REM **************************
10 VTAB 24: CALL -868:EF = 0: RETURN : REM ERASE ERROR MSG
20 FOR Q = 1 TO LEN(Q$):QQ$ = MID$ (Q$,Q,1)
23 IF QQ$ = "+" OR QQ$ = "-" OR QQ$ = "." THEN 27
25 IF ASC(QQ$) <48 OR ASC(QQ$) >57 THEN VTAB 24: PRINT G$;"PLEASE ENTER A NUMBER";:EF = 1: RETURN
27 NEXT Q: RETURN
30 VTAB 24: PRINT G$;"NUMBER OUT OF RANGE - PLEASE REENTER";: RETURN : REM PRINT ERROR MSG
40 TEXT : CLEAR : SPEED= 255: GOSUB 1400
50 HOME
60 PRINT "F A M I L Y F I N A N C E"
70 PRINT : PRINT " 0) END PROGRAM"
80 PRINT : PRINT " 1) LOAD FILE FROM DISK"
90 PRINT : PRINT " 2) SAVE FILE TO DISK"
100 PRINT : PRINT " 3) ENTER BUDGET DATA"
110 PRINT : PRINT " 4) DISPLAY BUDGET DATA"
120 VTAB 14: PRINT : INPUT "ENTER FUNCTION NUMBER (0-4): ";Q$
123 GOSUB 10
125 GOSUB 20: IF EF = 1 THEN 120
127 N = VAL(Q$)
130 IF N = 0 THEN 170
140 IF N <1 OR N >4 THEN GOSUB 30: GOTO 120
150 ON N GOSUB 230,330,400,700
160 GOTO 50
170 HOME : IF NOT CH THEN END : REM DATA SAVED
180 PRINT "THE DATA CURRENTLY IN MEMORY HAS": PRINT "BEEN CHANGED, BUT NOT SAVED.": PRINT
190 INPUT "DO YOU WISH TO SAVE IT? (Y/N) ";Q$
200 IF Q$ = "Y" THEN 330
210 IF Q$ < >"N" THEN PRINT G$: GOTO 190
220 HOME : END
230 HOME : IF NOT CH THEN 280
240 PRINT "THE DATA IN CURRENTLY IN MEMORY HAS": PRINT "BEEN CHANGED, BUT NOT SAVED.": PRINT
250 INPUT "DO YOU WISH TO SAVE IT? (Y/N) ";Q$
260 IF Q$ = "Y" THEN 330
270 IF Q$ < >"N" THEN PRINT G$: GOTO 250
280 INPUT "ENTER YEAR: ";F$
285 F$ = "BUDGET FILE." +F$
290 BL$ = "BLOAD " +F$ +",A"
300 & A%(0,0,0)
310 PRINT D$;BL$; PEEK(936) +256 * PEEK(937)
320 RETURN
330 HOME
340 INPUT "ENTER YEAR: ";F$
345 F$ = "BUDGET FILE." +F$
350 BS$ = "BSAVE " +F$ +",A":L$ = ",L"
360 LN = 32 *18 *13 *2
370 & A%(0,0,0)
380 PRINT D$;BS$; PEEK(936) +256 * PEEK(937);L$;LN
385 CH = 0
390 RETURN
400 HOME
410 VTAB 1: PRINT "ENTER MONTH (1-12):"
420 VTAB 2: PRINT "ENTER DAY (1-31):"
430 FOR I = 1 TO 9: VTAB I +3
440 PRINT I;") ";A$(I): NEXT I
450 FOR I = 10 TO 17: VTAB I -9 +3: HTAB 20
460 PRINT I;") ";A$(I): NEXT I
470 VTAB 20: PRINT "ENTER CATEGORY (1-17):"
480 VTAB 21: PRINT "ENTER AMOUNT:"
485 VTAB 23: PRINT "('0' RETURNS TO NEXT HIGHER ENTRY)
490 VTAB 1: HTAB 21: CALL -868: PRINT CHR$(95); CHR$(95): VTAB 1: HTAB 21: INPUT "";Q$
493 GOSUB 10
495 GOSUB 20: IF EF = 1 THEN 490
497 M = VAL(Q$)
500 IF M = 0 THEN RETURN
510 IF M <1 OR M >12 THEN GOSUB 30: GOTO 490
520 VTAB 2: HTAB 19: CALL -868: PRINT CHR$(95); CHR$(95): VTAB 2: HTAB 19: INPUT "";Q$
523 GOSUB 10
525 GOSUB 20: IF EF = 1 THEN 520
527 D = VAL(Q$)
530 IF D = 0 THEN 490
540 IF D <1 OR D >31 THEN GOSUB 30: GOTO 520
550 VTAB 20: HTAB 24: CALL -868: PRINT CHR$(95); CHR$(95): VTAB 20: HTAB 24: INPUT "";Q$
553 GOSUB 10
555 GOSUB 20: IF EF = 1 THEN 550
557 C = VAL(Q$)
560 IF C = 0 THEN 520
570 IF C <1 OR C >17 THEN GOSUB 30: GOTO 550
580 VTAB 21: HTAB 15: FOR I = 1 TO 6: PRINT CHR$(95);: NEXT I: VTAB 21: HTAB 15: INPUT "";Q$
583 GOSUB 10
585 GOSUB 20: IF EF = 1 THEN 580
587 N = VAL(Q$)
590 IF N = 0 THEN 610
600 N1 = N1 +N: VTAB 21: HTAB 27: PRINT "TOTAL = ";N1;: GOTO 580
610 N1 = N1 +.5:N% = N1
620 A%(D,C,M) = A%(D,C,M) +N%
630 A%(0,C,M) = A%(0,C,M) +N%
640 IF C = 1 THEN 670
650 A%(D,0,M) = A%(D,0,M) +N%
660 A%(0,0,M) = A%(0,0,M) +N%
670 N1 = 0: REM CLEAR TOTAL
680 CH = 1: REM SET DATA CHANGED FLAG
690 GOTO 550
700 HOME
705 PRINT : PRINT " 0) RETURN"
710 PRINT : PRINT " 1) MONTHLY"
720 PRINT : PRINT " 2) YEARLY"
730 VTAB 8: HTAB 1: INPUT "ENTER DISPLAY TYPE (0-2): ";Q$
733 GOSUB 10
735 GOSUB 20: IF EF = 1 THEN 730
737 N = VAL(Q$)
740 IF N = 0 THEN RETURN
745 IF N <0 OR N >2 THEN GOSUB 30: GOTO 730
750 ON N GOSUB 770,1040
760 GOTO 700
770 HOME
780 VTAB 2: HTAB 1: INPUT "ENTER MONTH (1-12) OR '0' TO RETURN: ";Q$
783 GOSUB 10
785 GOSUB 20: IF EF = 1 THEN 780
787 M = VAL(Q$)
790 IF M = 0 THEN RETURN
800 IF M <1 OR M >12 THEN GOSUB 30: GOTO 780
810 HOME : PRINT M$(M)
820 FOR I = 1 TO 17: VTAB I +2: PRINT A$(I): NEXT I
830 VTAB 21: PRINT "TOTL"
840 VTAB 1:HT = 36:L = 5
850 HTAB HT: PRINT "TOTL"
860 FOR I = 1 TO 17:F$ = STR$(A%(0,I,M))
870 VTAB I +2: HTAB HT: PRINT " ": VTAB I +2: GOSUB 1370
880 NEXT I
890 F$ = STR$(A%(0,0,M)): VTAB 21: HTAB HT: PRINT " ": VTAB 21: GOSUB 1370
900 D = 1:L = 4
910 HT = 1: FOR J = D TO D +5
920 HT = HT +5
930 VTAB 1: HTAB HT +1: PRINT " ": VTAB 1: HTAB HT +1: PRINT J
940 FOR I = 1 TO 17:F$ = STR$(A%(J,I,M))
950 VTAB I +2: HTAB HT: PRINT " ": VTAB I +2: GOSUB 1370
960 NEXT I
970 F$ = STR$(A%(J,0,M)): VTAB 21: HTAB HT: PRINT " ": VTAB 21: GOSUB 1370
980 NEXT J
990 VTAB 23: HTAB 1: INPUT "ENTER DAY (1-31) OR '0' TO RETURN: ";Q$
993 GOSUB 10
995 GOSUB 20: IF EF = 1 THEN 990
997 D = VAL(Q$)
1000 IF D = 0 THEN RETURN
1010 IF D <1 OR D >31 THEN GOSUB 30: GOTO 990
1020 IF D >26 THEN D = 26
1030 GOTO 910
1040 HOME
1050 PRINT "COMPUTING YEARLY TOTALS..."
1060 FOR M = 1 TO 12
1070 FOR C = 1 TO 17
1080 Y%(M,C) = A%(0,C,M)
1090 Y%(0,C) = Y%(0,C) +Y%(M,C)
1100 IF C = 1 THEN 1130
1110 Y%(M,0) = Y%(M,0) +Y%(M,C)
1120 Y%(0,0) = Y%(0,0) +Y%(M,C)
1130 NEXT C
1140 NEXT M
1145 HOME
1150 FOR C = 1 TO 17: VTAB C +2: PRINT A$(C): NEXT C
1160 VTAB 21: PRINT "TOTL"
1170 HT = 35:L = 6: VTAB 1: HTAB HT +1: PRINT "TOTL"
1180 FOR C = 1 TO 17
1190 F$ = STR$(Y%(0,C)): VTAB C +2: HTAB HT: PRINT " "
1200 VTAB C +2: GOSUB 1370: NEXT C
1210 F$ = STR$(Y%(0,0)): VTAB 21: GOSUB 1370
1220 M = 1
1230 HT = 0:L = 5
1240 FOR I = M TO M +3:HT = HT +7
1250 VTAB 1: HTAB HT +1: PRINT M$(I)
1260 FOR C = 1 TO 17
1270 F$ = STR$(Y%(I,C)): VTAB C +2: HTAB HT: PRINT " "
1280 VTAB C +2: GOSUB 1370: NEXT C
1290 F$ = STR$(Y%(I,0)): VTAB 21: HTAB HT: PRINT " "
1300 VTAB 21: GOSUB 1370
1310 NEXT I
1320 VTAB 23: HTAB 1: INPUT "ENTER MONTH (1-12) OR '0' TO RETURN: ";Q$
1323 GOSUB 10
1325 GOSUB 20: IF EF = 1 THEN 1320
1327 M = VAL(Q$)
1330 IF M = 0 THEN RETURN
1340 IF M <1 OR M >12 THEN GOSUB 30: GOTO 1320
1350 IF M >9 THEN M = 9
1360 GOTO 1230
1370 IF F$ = "0" THEN 1390
1380 HTAB HT +L - LEN(F$): PRINT F$: RETURN
1390 HTAB HT +L -1: PRINT ".": RETURN
1400 DIM A%(31,17,12),A$(17),M$(12),Y%(12,17)
1405 FOR I = 1 TO 17: READ A$(I): NEXT I
1410 DATA "INCM","MORT","FOOD","CAR"
1420 DATA "MED","CLTH","HOBY","ENTR"
1430 DATA "TRNS","HOME","BOOK","GAS"
1440 DATA "TELE","ELEC","UTIL","INSR","MISC"
1450 FOR I = 1 TO 12: READ M$(I): NEXT I
1460 DATA "JAN","FEB","MAR","APR"
1470 DATA "MAY","JUN","JUL","AUG"
1480 DATA "SEP","OCT","NOV","DEC"
1490 CH = 0: REM DATA CHANGED FLAG
1500 D$ = "<CTRL-D>": REM CTRL-D
1510 PRINT D$;"NOMON C,I,O"
1520 G$ = "<CTRL-G>": REM CTRL-G
1530 REM
1540 REM THE FOLLOWING ROUTINE IS FROM THE MAY, 1980
1550 REM ISSUE OF CALL APPLE.
1560 REM IT PROVIDES THE ADDRESS OF THE FIRST ELEMENT
1570 REM IN AN ARRAY THROUGH THE '&' FUNCTION.
1580 REM THIS IS USED IN THE ROUTINES TO LOAD AND SAVE
1590 REM THE ARRAY TO DISK
1600 REM
1610 FOR I = 1 TO 10: READ N: POKE 937 +I,N: NEXT I
1620 DATA 32,227,223,141,168,3,140,169,3,96
1630 POKE 1013,76: POKE 1014,170: POKE 1015,3
1650 RETURN